What I Learned from Yin Wang's Computer Science Course

2025-07-24

For convenience, this article will refer to “Yin Wang” by name without using honorifics like “Professor.”

About two months ago, I enrolled in Yin Wang’s Computer Science Video Course (Basic Level). I graduated after one month of study, spending roughly 120 hours in total. This “120 hours” figure is carefully estimated, covering both video watching and practice exercises. Since the pace is self-determined, “one month” may not be very intuitive—measuring in hours makes things clearer. 120 hours means that if you study 2 hours per day (excluding holidays), it takes 60 days.

If I say I studied for a month, some might dismiss it—how much can you learn in a month? There’s no such thing as a fast-track course, not even from Yin Wang. One month is indeed too short to master comprehensive knowledge. But can a month help me organize my programming skills and gain a more systematic understanding of computer science? I may have encountered many blind spots in my work—can this course help clear the fog and let me see things clearly? I progressed quickly because I wasn’t starting from scratch. I can usually write working code with ease, even if it’s not elegant or concise. These programming skills have become muscle memory—like a wild man in a jungle who, despite never undergoing formal martial arts training, still outperforms the average person due to raw physicality and instincts.

Now, a month after graduation, I’ve had time to reflect and would like to share what can be learned from the course. I didn’t write a summary on graduation day, fearing it would be shallow or too personal. One month is still not enough—there hasn’t been much time to review, and the course’s full potential hasn’t yet been realized. Still, summarizing now doesn’t prevent deeper insights in the future. In his article “Einstein on Education,” Yin Wang quotes Einstein as saying, “The knowledge imparted should be treated as a precious gift.” I stumbled upon this article after finishing the course and suddenly understood what that quote really means.

Yin Wang doesn’t know me, but I’ve known him for a long time. I wasn’t his student before, but he’s long been my teacher. I’ve followed his blog for years and gained much from it. This time, taking his course felt like opening the door to a new world. That’s not an exaggeration—I can say as a graduate that Yin Wang wasn’t bluffing. His course is truly as good as he claims. You might disagree with his opinions or dislike his life philosophy, but it’s impossible to doubt his expertise in computer science, especially in programming languages. And you don’t have to worry that someone as meticulous as him would offer a superficial course just to fool people.

Because the course content is confidential, I won’t disclose any specifics, only what’s already stated in the public syllabus. For beginners, the most straightforward takeaways are fundamental concepts like functions, linked lists, and binary trees—material that spans an entire undergraduate program. Lesson 6 on interpreters is the course’s “final product,” comparable to what’s taught in top-tier U.S. universities at senior undergrad or early master’s level. Why does the syllabus describe it as “content only learned at the PhD level”? Because Chinese universities don’t have majors in programming languages. Undergrads don’t learn interpreters, and even in grad school, lambda calculus is elective—so learning about interpreters usually doesn’t happen until early PhD. Thus, Wang’s description is not exaggerated.

Interpreter-related topics are rare in China’s educational system, and concise, high-quality tutorials are even rarer. For instance, after completing this course, try searching for interpreter tutorials on Bilibili—you’ll see how lacking they are. You’ll immediately notice what’s missing, what’s wrong, and how to improve them. You’ll also know how to write the most reliable implementation using the simplest code. Why are interpreters important? Take Ethereum’s Virtual Machine (EVM), which is itself an interpreter—not for programming languages, but for Ethereum opcodes, each corresponding to a stack operation. Once you’ve studied interpreters, you’ll gain a whole new understanding of how EVM works.

For students with prior experience, the course offers more than surface-level knowledge. For example, it uses very few programming constructs to convey all six lessons. That level of simplicity requires deep theoretical understanding. From a learner’s perspective, it’s worth thinking about how the course is structured, how such abstraction is achieved, and what kind of skill it takes to create a course like this—how far away you are from being able to do the same.

Additionally, since the course is self-contained, learners could potentially recreate the whole thing themselves—like a refined artifact you can revisit and review anytime. The Basic Level content is like high-quality raw materials. Graduating means you’ve obtained these materials. But raw materials must be refined and processed to become practical tools. That’s probably why some students feel they’ve learned nothing, while others find it priceless—because they know how to use it repeatedly to generate value.

Recently, I realized learning new tech has become easier since completing the course. The course’s step-by-step teaching method rubbed off on me—I now study other topics in a similar way. One step at a time, and suddenly, I’ve picked up things like Solana smart contracts, Bitcoin scripts, Bitcoin Runes, CPS, and coroutine scheduling via continuations. It’s strange—how could a basic course on linked lists and binary trees have such power? Maybe it’s not just knowledge I gained, but also a great method of learning. No wonder Wang calls it “the essence of computer science.”

Though I’ve worked in the blockchain industry for years, I’ve become increasingly confused about what blockchain tech really is. I used to focus heavily on consensus mechanisms. Why not other principles like cryptography, distributed networking, or storage systems? Because consensus is unique to blockchain—the rest are just engineering. Smart contracts aren’t even essential to blockchain. Layer 2 solutions? Pure engineering experiments. Concepts like challenge periods and withdrawal windows are just business logic. Spoiler alert: Yin Wang’s course actually touches on blockchain’s fundamental technical principles. Surprising? But it’s true.

Compared to the scattered engineering of blockchain, having solid computer science fundamentals is vital—especially abstract thinking and an approach to learning that transcends syntax and reaches into the essence of programming. I once believed deeply exploring blockchain would elevate my tech skills. I thought I’d surpass “basic computer science” by diving deeper and deeper into blockchain. Turns out, that wasn’t the case. That’s why I took the course—and I learned a lot.

After finishing, I actually started to doubt myself. Had my years in blockchain been a waste? Why did a beginner-level course feel so life-changing? I couldn’t figure it out. Until I read Yin Wang’s article on course design: “Computer Science Course.” When I reached the paragraph on the “Socratic Method,” I had an epiphany. My knowledge had always been inside me—the course helped “deliver” it. The knowledge I now possess is the result of years of experience and this course arriving at just the right moment to help me bring it all to light.

Socrates admitted he had no knowledge himself, yet he wanted to teach others. His solution to this paradox was: the knowledge was not something he instilled, but something people already possessed—like unborn knowledge they were unaware of. Socrates acted like a midwife, helping them give birth to their knowledge.

It’s like wandering a strange city without a map. You might walk far, but have no idea where you are. The computer science course is like a full map. With it, all the directions and forks are clear. But you might not venture out—you might not even exert the effort to explore. My situation was: I had already walked many roads in this city. One day, I got the map—and finally understood where I was, and which roads I had taken.

Also, Yin Wang recently commented on Weibo that AI can’t write “Yin Wang-level” code. What is “Yin Wang-level” code? You’ll know if you take the course. When I did exercises, the TAs most frequently reminded me that my code was “too complex”—sometimes structurally, sometimes algorithmically. But every time I revised it to meet the course’s standards, I was amazed at how elegant it became. I’ve been programming for years. Writing code that works was easy. Writing beautiful code—not so much. If I had written this kind of code at work, the company would have hugely benefited.

And that’s not all. Some may wonder: can a single elective course really teach you a new programming language? Just remember who your instructor is—a true expert in programming languages.